#define  _CRT_SECURE_NO_WARNINGS 1
#include "game.h"

void InitBoard(char board[Rows][Cols], int rows, int cols, char set)//初始化棋盘
{
	for (int i = 0; i < rows; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			board[i][j] = set;
	 }
	}
}
void DisplayBoard(char board[Rows][Cols], int row, int col)//打印棋盘
{
	printf("---------扫雷游戏----------\n");
	for (int i = 0; i <=col; i++)//打印列号
	{
		printf("%d ", i);
	}
	printf("\n");
	for (int i = 1; i <=row; i++)
	{
		printf("%d ", i);
		for (int j = 1; j <= col; j++)
		{
			printf("%c ", board[i][j]);
	 }
		printf("\n");
	}
	printf("---------扫雷游戏----------\n");

}
void SetMine(char mine[Rows][Cols], int row, int col)//布置雷
{
	int count = Easy;
	while (count)
	{
		int x = rand() % row + 1;//产生随机下标
		int y = rand() % col + 1;
		if (mine[x][y]='0')
		{
			mine[x][y] = '1';
			count--;
		}

	}
}
static int get_mine_count(char mine[Row][Col],int x,int y)//只能在本文件使用
{
	return mine[x - 1][y] +
		mine[x - 1][y - 1] +
		mine[x][y - 1] +
		mine[x + 1][y - 1] +
		mine[x + 1][y] +
		mine[x + 1][y + 1] +
		mine[x][y + 1] +
		mine[x - 1][y - 1] - 8 * '0';
}
void FindMine(char mine[Rows][Cols], char show[Rows][Cols], int row, int col)//排查雷
{
	//1 输入排查的坐标
	//2 检查坐标是不是雷
	//3 是雷 游戏结束
	// 4不是雷 统计坐标附近有几个雷--储存排查雷的信息到show数组，游戏继续
	int win = 0;
	int x = 0;
	int y = 0;
	while (win<row*col-Easy)
	{
		
		printf("请输入要排查的坐标\n");
		scanf("%d %d", &x, &y);
		if (x>=1&&x<=row&&y>=1&&y<=col)//判断输入坐标是否合法
		{
			if (mine[x][y] == '1')
			{
				printf("很遗憾，你被炸死了\n");
				DisplayBoard(mine, Row, Col);
				break;
		  }
			else
			{
			int count=	get_mine_count(mine, x, y);//在不是雷的情况下，统计周边有几个雷
			show[x][y] = count + '0';
			DisplayBoard(show, Row, Col);//显示被排查的信息
			win++;
			}
		}
		else
		{
			printf("坐标不合法，请重新输入\n");
		}
	}
	if (win == row * col - Easy)
	{
		printf("恭喜，排雷成功了\n");
		DisplayBoard(mine, Row, Col);

	}
}